﻿// //  ********************************************************************************
// //  Copyright (C) 2016 Sebastian Kenter. All rights reserved.
// // 
// //  Name    : MultiServerEngine | ServerFramework | IClientPeerRegistry.cs
// //  Created : 2016 - 02 - 16 20:53
// //  Modified: 2016 - 02 - 20 12:33
// //  ********************************************************************************

using System;
using System.Collections.Generic;
using ExitGames.Logging;

namespace ServerFramework.Interfaces.Client
{
    /// <summary>
    ///     Interface for the client peer registry holding all connected client peers for one server
    /// </summary>
    /// <typeparam name="TClientPeer">The type of the peer (normally IClientPeer)</typeparam>
    public interface IClientPeerRegistry<TClientPeer>
    {
        ILogger Logger { get; }

        bool RegisterPeer(TClientPeer clientPeer);

        bool UnregisterClientPeer(TClientPeer clientPeer);

        IDictionary<Guid, TClientPeer> GetClientPeers();

        IClientPeer GetClientPeer(Guid peerId);
    }
}
